home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / pcpooler.arc / MAINT.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1980-01-01  |  19.7 KB  |  382 lines

  1. 10  REM maint program pc-pooler:team/game file maintenance module
  2. 20  TX=90:GX=800:WX=100:PX=50
  3. 30  ON ERROR GOTO 3580
  4. 35  SVO9=O9:SVGM$=GM$:SVDT$=DT$:SVLPL=LPL:IF O9=0 THEN ERROR 101
  5. 40  KEY OFF
  6. 60  BLNK$="                                        ":SDT$="000000":EDT$="999999"
  7. 70  ZB$="ZZZZZZZZZZZZZZZZZZZZZ"
  8. 80  DIM TEAM$(TX)
  9. 90  OPEN "TEAMS.DAT" FOR INPUT AS #1:INPUT#1,NT:IF NT>TX THEN ERROR 151
  10. 100  FOR I7=1 TO NT
  11. 110  INPUT#1,TEAM$(I7)
  12. 120  NEXT I7
  13. 130  CLOSE#1
  14. 140  FOR I7=NT+1 TO TX:TEAM$(I7)=ZB$:NEXT I7
  15. 150  TOP=1:CHNG=0:MSG$=""
  16. 160  DIM DT$(GX),GM%(5,GX)
  17. 170  OPEN "GAMES.DAT" FOR INPUT AS #2:INPUT#2,NG:IF NG>GX THEN ERROR 152
  18. 180  FOR I7=1 TO NG
  19. 190      INPUT#2,GM%(1,I7),GM%(2,I7),GM%(3,I7),GM%(4,I7),GM%(5,I7),DT$(I7)
  20. 200  IF GM%(1,I7)<1 OR GM%(1,I7)>NT OR GM%(2,I7)<1 OR GM%(2,I7)>NT THEN ERROR 100
  21. 210  IF TEAM$(GM%(1,I7))=ZB$ OR TEAM$(GM%(2,I7))=ZB$ THEN ERROR 100
  22. 220  NEXT I7
  23. 230  CLOSE#2
  24. 240  CLS:PRINT"Team/Game File Maintenance":PRINT
  25. 245  KEY 1,"1":KEY 2,"2":KEY 3,"3":KEY 4,"4":KEY 5,"":KEY 6,"":KEY 7,"":KEY 8,"":KEY 9,"":KEY 10,""
  26. 250  PRINT"F1- Team File Maintenance"
  27. 260  PRINT"F2- Game File Maintenance"
  28. 270  PRINT"F3- Help"
  29. 280  PRINT"F4- Quit (Return to main menu)":PRINT
  30. 290  PRINT"Please hit F1-F4"
  31. 300  GOSUB 820:MODE=VAL(C$):IF (MODE<1)OR(MODE>4) THEN 300
  32. 310  ON MODE GOSUB 510,1520,3100:IF MODE<4 THEN 240
  33. 320  IF CHNG=0 THEN 500:ELSE PRINT:PRINT"Hit Y to save changes made,"
  34. 330  PRINT"Or N to reject those changes."
  35. 340  GOSUB 820:IF C$="N" THEN 500:ELSE IF C$<>"Y" THEN 340
  36. 350  WHILE TEAM$(NT)=ZB$
  37. 360     NT=NT-1
  38. 370  WEND
  39. 380  OPEN "TEAMS.DAT" FOR OUTPUT AS #1
  40. 390  PRINT#1,NT
  41. 400  FOR Q=1 TO NT
  42. 410    PRINT#1,TEAM$(Q)
  43. 420  NEXT Q
  44. 430  CLOSE#1
  45. 440  OPEN "GAMES.DAT" FOR OUTPUT AS #2
  46. 450  PRINT#2,NG
  47. 460  FOR Q=1 TO NG
  48. 470      PRINT#2,GM%(1,Q);",";GM%(2,Q);",";GM%(3,Q);",";GM%(4,Q)",";GM%(5,Q);",";DT$(Q)
  49. 480  NEXT Q
  50. 490  CLOSE#2
  51. 500  O9=SVO9:GM$=SVGM$:DT$=SVDT$:LPL=SVLPL:COMMON O9,GM$,DT$,LPL:CLS:PRINT"Reading main menu...":CHAIN"pooler"
  52. 510  CLS:PRINT " #   TYPE  NAME":BOT=TOP+9:IF BOT>NT THEN BOT=NT
  53. 520  IF NT=0 THEN TOP=1:BOT=0:PRINT:PRINT"*** No teams on file ***":GOTO 590
  54. 530  FOR I=TOP TO BOT
  55. 540  PRINT USING "##";I;:PRINT ".   ";
  56. 550  T$=LEFT$(TEAM$(I),1): N$=RIGHT$(TEAM$(I),20)
  57. 560  IF T$="Z" THEN PRINT ELSE PRINT T$;"    ";N$
  58. 570  PRINT
  59. 580  NEXT I
  60. 590  IF MODE=1 THEN 640
  61. 600  LOCATE 23,1:PRINT "F1=Quit   F3=Del  F5=Add  F6=Teams     ";
  62. 610  LOCATE 24,1:PRINT "F7=Update F8=Help F9=Back F10=Forward  ";
  63. 620  KEY 1,"Q":KEY 2,"": KEY 3,"D":KEY 4,"":KEY 5,"A":KEY 6,"T": KEY 7,"U":KEY 8,"H":KEY 9,"B":KEY 10,"F"
  64. 630  GOTO 670
  65. 640  LOCATE 23,1:PRINT "F1=Quit   F3=Del  F5=Add  F6=Game      ";
  66. 650  LOCATE 24,1:PRINT "F7=Update F8=Help F9=Back F10=Forward  ";
  67. 660  KEY 1,"Q":KEY 2,"": KEY 3,"D":KEY 4,"":KEY 5,"A":KEY 6,"G": KEY 7,"U":KEY 8,"H":KEY 9,"B":KEY 10,"F"
  68. 670  MSG$=MSG$+BLNK$:MSG$=LEFT$(MSG$,39):LOCATE 25,1:PRINT MSG$;
  69. 680  MSG$="Select one of the above (Q to Quit)"
  70. 690  GOSUB 800:OLDTOP=TOP
  71. 700  IF C$="B" THEN TOP=TOP-9:IF TOP<1 THEN TOP=1
  72. 710  IF C$="F" THEN TOP=TOP+9:IF TOP>NT THEN TOP=NT
  73. 720  IF C$="H" THEN GOSUB 3280
  74. 730  IF C$="Q" THEN RETURN
  75. 740  IF C$="A" THEN GOSUB 860
  76. 750  IF C$="D" THEN GOSUB 1080
  77. 760  IF (MODE=1)AND(C$="G") THEN GOSUB 1520
  78. 770  IF (MODE=2)AND(C$="T") THEN GOSUB 2500
  79. 780  IF C$="U" THEN GOSUB 1240
  80. 790  IF OLDTOP<>TOP THEN 510 ELSE 590
  81. 800  REM PROCESS COMMAND STRING
  82. 810  LOCATE 22,1,0,7:PRINT "Choice?=====>                          ";
  83. 820  C$=INKEY$:IF C$="" THEN 820
  84. 830  IF LEN(C$)=0 THEN 810:C$=LEFT$(C$,1)
  85. 840  IF (ASC(C$)>=96)AND(ASC(C$)<=122) THEN C$=CHR$(ASC(C$)-32)
  86. 850  RETURN
  87. 860  LOCATE 22,15:PRINT "Add Team To List";
  88. 870  FOR I=1 TO TX:IF TEAM$(I)=ZB$ THEN 890
  89. 880  NEXT I:MSG$="No room to add a team.":RETURN
  90. 890  LOCATE 25,1:PRINT LEFT$(BLNK$,39);
  91. 900  LOCATE 24,1:PRINT LEFT$(BLNK$,39);
  92. 910  LOCATE 23,1:PRINT "Team type? (P or C or O) (N to Cancel)";
  93. 920  GOSUB 820:IF (C$<>"N")AND(C$<>"P")AND(C$<>"C")AND(C$<>"O") THEN 920: ELSE T$=C$
  94. 930  IF C$="N" THEN 1040
  95. 940  LOCATE 23,1:PRINT LEFT$(BLNK$,39);
  96. 950  LOCATE 24,1:PRINT "Type = ";T$;" Enter Name Above (20 char max)";
  97. 960  N$=" ":LOCATE 23,1:INPUT N$
  98. 970  IF (LEN(N$)=0)OR(N$=" ") THEN MSG$="Null entry implies cancel.":RETURN
  99. 980  GOSUB 1450
  100. 990  N$=N$+BLNK$:N$=LEFT$(N$,20)
  101. 1000  FOR J=1 TO NT: IF TEAM$(J)=T$+N$ THEN 1070
  102. 1010  NEXT J
  103. 1020  LOCATE 24,1:PRINT T$;" ";N$;"--Verify OK (Y/N)";
  104. 1030  GOSUB 820: IF (C$<>"Y")AND(C$<>"N") THEN LOCATE 25,1:PRINT "Please Hit Y to accept, N to reject";:GOTO 1030
  105. 1040  IF C$="N" THEN MSG$="Addition Rejected.":RETURN
  106. 1050  IF I>NT THEN NT=I
  107. 1060  CHNG=1:TEAM$(I)=T$+N$:TOP=I:MSG$="Addition Accepted.":OLDTOP=0:RETURN
  108. 1070  MSG$="Team name found in list.":TOP=J:OLDTOP=0:RETURN
  109. 1080  LOCATE 22,15:PRINT "Delete Team From List";
  110. 1090  LOCATE 25,1:PRINT LEFT$(BLNK$,39);
  111. 1100  LOCATE 24,1:PRINT LEFT$(BLNK$,39);
  112. 1105  LOCATE 23,1:PRINT LEFT$(BLNK$,39);
  113. 1110  LOCATE 23,1:PRINT "Team #? (1 -";NT;"),":LOCATE 24,1:PRINT"or press ENTER to Cancel)";
  114. 1120  LOCATE 23,25:INPUT NM$: NM=VAL(NM$):IF NM=0 THEN 1220:ELSE IF (NM<1)OR(NM>NT) THEN 1110
  115. 1130  T$=LEFT$(TEAM$(NM),1):N$=RIGHT$(TEAM$(NM),20)
  116. 1140  IF T$="Z" THEN MSG$="Team "+NM$+" is already blank.":RETURN
  117. 1150  FOR J=1 TO NG:IF (GM%(1,J)=NM)OR(GM%(2,J)=NM) THEN 1230
  118. 1160  NEXT J
  119. 1170  LOCATE 23,1:PRINT USING "##";NM;:PRINT ". ";T$;" ";N$;"             ";
  120. 1180  LOCATE 24,1:PRINT "Verify OK To Delete Team (Y/N)         ";
  121. 1190  GOSUB 820: IF (C$<>"Y")AND(C$<>"N") THEN LOCATE 25,1:PRINT "Please Hit Y to Delete, N to Cancel";:GOTO 1190
  122. 1200  IF C$="N" THEN MSG$="Team "+NM$+" not deleted.":RETURN
  123. 1210  CHNG=1:TEAM$(NM)=ZB$:MSG$="Team "+NM$+" deleted OK.":OLDTOP=0:RETURN
  124. 1220  MSG$="Team delete cancelled.":RETURN
  125. 1230  D$=DT$(J):GOSUB 2020:MSG$="Game on "+FD$+". Please delete first.":RETURN
  126. 1240  LOCATE 22,15:PRINT "Update Team From List";
  127. 1250  LOCATE 25,1:PRINT LEFT$(BLNK$,39);
  128. 1260  LOCATE 24,1:PRINT LEFT$(BLNK$,39);
  129. 1261  LOCATE 23,1:PRINT LEFT$(BLNK$,39);
  130. 1270  LOCATE 23,1:PRINT "Team #? (1 -";NT;"),":LOCATE 24,1:PRINT"or press ENTER to Cancel)";
  131. 1280  LOCATE 23,25:INPUT NM$: NM=VAL(NM$):IF NM=0 THEN 1430:ELSE IF (NM<1)OR(NM>NT) THEN 1270
  132. 1290  T$=LEFT$(TEAM$(NM),1):N$=RIGHT$(TEAM$(NM),20)
  133. 1300  IF T$="Z" THEN MSG$="Team "+NM$+" is blank. (Try Add)":RETURN
  134. 1310  LOCATE 25,1:PRINT USING "##";NM;:PRINT ". ";T$;" ";N$;
  135. 1320  LOCATE 24,1:PRINT "Type = ";T$;" Enter New Name Above";
  136. 1330  N$=" ":LOCATE 23,1:PRINT LEFT$(BLNK$,39);:LOCATE 23,1:INPUT N$
  137. 1340  IF (LEN(N$)=0)OR(N$=" ") THEN 1430
  138. 1350  GOSUB 1450
  139. 1360  N$=N$+BLNK$:N$=LEFT$(N$,20)
  140. 1370  FOR J=1 TO NT: IF TEAM$(J)=T$+N$ THEN 1440
  141. 1380  NEXT J
  142. 1390  LOCATE 24,1:PRINT T$;" ";N$;"--Verify OK (Y/N)";
  143. 1400  GOSUB 820: IF (C$<>"Y")AND(C$<>"N") THEN LOCATE 25,1:PRINT "Please Hit Y to accept, N to reject";:GOTO 1400
  144. 1410  IF C$="N" THEN 1430
  145. 1420  CHNG=1:TEAM$(NM)=T$+N$:TOP=NM:MSG$="Update Accepted.":OLDTOP=0:RETURN
  146. 1430  MSG$="Update cancelled.":RETURN
  147. 1440  MSG$="Duplicate entry caused cancel.":IF J=NM THEN RETURN: ELSE TOP=J:OLDTOP=0:RETURN
  148. 1450  IF LEN(N$)=0 THEN RETURN
  149. 1460  T2$="":SIV=I
  150. 1470  FOR I=1 TO LEN(N$)
  151. 1480  C$=MID$(N$,I,1)
  152. 1490  IF (ASC(C$)>=96)AND(ASC(C$)<=122) THEN C$=CHR$(ASC(C$)-32)
  153. 1500  T2$=T2$+C$:NEXT I
  154. 1510  I=SIV:N$=T2$:RETURN
  155. 1520  IF MODE=1 THEN 1530:ELSE KEY 1,"Q":KEY 2,"S": KEY 3,"D":KEY 4,"":KEY 5,"A":KEY 6,"T": KEY 7,"U":KEY 8,"H":KEY 9,"B":KEY 10,"F":GOTO 1540
  156. 1530  KEY 1,"Q":KEY 2,"S": KEY 3,"D":KEY 4,"":KEY 5,"":KEY 6,"": KEY 7,"U":KEY 8,"H":KEY 9,"B":KEY 10,"F"
  157. 1540  GTOP=1
  158. 1550  CLS:PRINT "Date/#,Type Home/Visitor     Score Line":PRINT:MAXL=18:SPOS=GTOP:OSPOS=GTOP:NUML=0:PRNTS=0
  159. 1560  IF NG=0 THEN PRINT"*** No games on file ***":GTOP=1:GOTO 1690
  160. 1570  WHILE (NUML<MAXL)AND(SPOS<=NG)
  161. 1580    I=SPOS:D$=DT$(I):IF (D$<SDT$)OR(D$>EDT$) THEN 1660:ELSE NUML=NUML+3
  162. 1590    PRNTS=1:GOSUB 2020:PRINT FD$;" ";RIGHT$(TEAM$(GM%(1,I)),20);
  163. 1600    IF GM%(3,I)=-1 THEN PRINT "     ";:ELSE PRINT USING " ### ";GM%(3,I);
  164. 1610    IF GM%(5,I)>0 THEN PRINT USING "+##.#";(GM%(5,I)/10):ELSE PRINT
  165. 1620    PRINT USING "####";I;:PRINT ". ";LEFT$(TEAM$(GM%(1,I)),1);"  ";RIGHT$(TEAM$(GM%(2,I)),20);
  166. 1630    IF GM%(4,I)=-1 THEN PRINT "     ";:ELSE PRINT USING " ### ";GM%(4,I);
  167. 1640    IF GM%(5,I)<0 THEN PRINT USING "+##.#";(ABS(GM%(5,I)/10)):ELSE PRINT
  168. 1650    PRINT
  169. 1660    SPOS=SPOS+1
  170. 1670  WEND
  171. 1680  IF (PRNTS=0)AND(GTOP<>1) THEN 1540
  172. 1690  IF MODE=1 THEN 1710:ELSE LOCATE 23,1:PRINT "F1=Quit F2=Select F3=Delete F5=Add     ";
  173. 1700  LOCATE 24,1:PRINT "F6=Team F7=Update F8=Help   F9=B F10=F ";:GOTO 1730
  174. 1710  LOCATE 23,1:PRINT "F1=Quit F2=Select F3=Delete F7=Update  ";
  175. 1720  LOCATE 24,1:PRINT "F8=Help F9=Back   F10=Forward          ";
  176. 1730  MSG$=MSG$+BLNK$:MSG$=LEFT$(MSG$,39):LOCATE 25,1:PRINT MSG$;
  177. 1740  MSG$="Select one of the above (Q to Quit)"
  178. 1750  GOSUB 800:GOLDTOP=GTOP
  179. 1760  IF C$="Q" THEN OLDTOP=0:RETURN
  180. 1770  IF C$="B" THEN GTOP=OSPOS-5:IF GTOP<1 THEN GTOP=1:OLDTOP=-1
  181. 1780  IF C$="F" THEN GTOP=SPOS-1:IF GTOP>NG THEN GTOP=NG:OLDTOP=-1
  182. 1790  IF C$="S" THEN GOSUB 1860
  183. 1800  IF (MODE=2)AND(C$="T") THEN GOSUB 510:GOLDTOP=0
  184. 1810  IF (MODE=2)AND(C$="A") THEN GOSUB 2160
  185. 1820  IF C$="U"  THEN GOSUB 2610
  186. 1830  IF C$="H"  THEN GOSUB 3420:C$="0"
  187. 1840  IF C$="D"  THEN GOSUB 2910
  188. 1850  IF GOLDTOP<>GTOP THEN 1550 ELSE 1690
  189. 1860  LOCATE 25,1:PRINT LEFT$(BLNK$,39);:LOCATE 25,1:PRINT "ALL for all or press Enter to quit";
  190. 1870  LOCATE 24,1:PRINT LEFT$(BLNK$,39);:LOCATE 24,1:PRINT "Enter starting date above (MM/DD/YY)";
  191. 1880  LOCATE 23,1:PRINT LEFT$(BLNK$,39);:LOCATE 23,1:INPUT S$
  192. 1890  IF LEN(S$)=0 THEN RETURN:ELSE IF (S$="ALL")OR(S$="all") THEN SD$="000000":ED$="999999":C$="Y":GOTO 2010:ELSE IF LEN(S$)<>8 THEN 1880
  193. 1900  GOSUB 2040: IF VAL(SF$)<10000 THEN 1880
  194. 1910  SD$=SF$
  195. 1920  LOCATE 25,1:PRINT LEFT$(BLNK$,39);:LOCATE 25,1:PRINT "(Enter nothing for same date)";
  196. 1930  LOCATE 24,1:PRINT LEFT$(BLNK$,39);:LOCATE 24,1:PRINT "Enter ending date above (MM/DD/YY)";
  197. 1940  LOCATE 23,1:PRINT LEFT$(BLNK$,39);:LOCATE 23,1:INPUT S$
  198. 1950  IF LEN(S$)=0 THEN ED$=SD$:GOTO 1980:ELSE IF LEN(S$)<>8 THEN 1880
  199. 1960  GOSUB 2040: IF VAL(SF$)<10000 THEN 1880:ELSE IF SF$<SD$ THEN 1860
  200. 1970  ED$=SF$
  201. 1980  LOCATE 23,1:PRINT LEFT$(BLNK$,39);:LOCATE 23,1:D$=SD$:GOSUB 2020:PRINT FD$;" - ";:D$=ED$:GOSUB 2020:PRINT FD$;
  202. 1990  LOCATE 24,1:PRINT LEFT$(BLNK$,39);:LOCATE 24,1:PRINT "Verify OK (Y/N)";
  203. 2000  GOSUB 820: IF (C$<>"Y")AND(C$<>"N") THEN LOCATE 25,1:PRINT "Please Hit Y to accept, N to reject";:GOTO 1930
  204. 2010  IF C$="N" THEN RETURN:ELSE SDT$=SD$:EDT$=ED$:GOLDTOP=0:GTOP=1:RETURN
  205. 2020  REM subroutine to do date formatting input d$ out fd$
  206. 2030  D1$=LEFT$(D$,2):D2$=MID$(D$,3,2):D3$=RIGHT$(D$,2):FD$=D2$+"/"+D3$+"/"+D1$:RETURN
  207. 2040  REM subroutine to do date CHANGE FORMATTED TO ORDERED S$-SF$
  208. 2050  D1$=LEFT$(S$,2):D2$=MID$(S$,4,2):D3$=RIGHT$(S$,2):D1%=VAL(D1$):D2%=VAL(D2$):D3%=VAL(D3$)
  209. 2060  IF (D3%<1)OR(LEN(S$)<>8) THEN SF$="ERROR":RETURN
  210. 2070  IF D3% MOD 4 = 0 THEN LY%=1 ELSE LY%=0
  211. 2080  IF (D1%<1)OR(D1%>12) THEN SF$="ERROR":RETURN
  212. 2090  ON D1% GOTO 2100,2110,2100,2130,2100,2130,2100,2100,2130,2100,2130,2100
  213. 2100  NDAYS%=31:GOTO 2140
  214. 2110  IF LY%=1 THEN NDAYS%=29:ELSE NDAYS%=28
  215. 2120  GOTO 2140
  216. 2130  NDAYS%=30
  217. 2140  IF (D2%<1)OR(D2%>NDAYS%) THEN SF$="ERROR": ELSE SF$=D3$+D1$+D2$
  218. 2150  RETURN
  219. 2160  LOCATE 22,15:PRINT "Add a game.";
  220. 2170  IF NG=GX THEN MSG$="No room to add a game.":RETURN
  221. 2180  IF (HOM%=0)OR(VIS%=0) THEN MSG$="Home/Vistor not selected. (Teams)":RETURN
  222. 2190  IF (HOM%=VIS%) THEN MSG$="Home & Visitor same team. (Teams)":RETURN
  223. 2200  LOCATE 23,1:PRINT LEFT$(BLNK$,39);:LOCATE 23,1:PRINT"Home:";RIGHT$(TEAM$(HOM%),20);
  224. 2210  LOCATE 24,1:PRINT LEFT$(BLNK$,39);:LOCATE 24,1:PRINT"Visitor:";RIGHT$(TEAM$(VIS%),20);
  225. 2220  LOCATE 25,1:PRINT LEFT$(BLNK$,39);:LOCATE 25,1:PRINT"Hit Y to continue, N to cancel";
  226. 2230  GOSUB 820:IF C$="N" THEN 2480:ELSE IF C$<>"Y" THEN 2230
  227. 2240  LOCATE 25,1:PRINT LEFT$(BLNK$,39);:LOCATE 25,1:PRINT"(Just ENTER to cancel).";
  228. 2250  LOCATE 24,1:PRINT LEFT$(BLNK$,39);:LOCATE 24,1:PRINT"Enter game date above (MM/DD/YY).";
  229. 2260  LOCATE 23,1:PRINT LEFT$(BLNK$,39);:LOCATE 23,1:INPUT S$
  230. 2270  IF LEN(S$)=0 THEN 2480:ELSE GOSUB 2050:IF SF$="ERROR" THEN 2260
  231. 2280  GD$=SF$
  232. 2290  FOR Q2=1 TO NG
  233. 2300     IF GD$>DT$(Q2) THEN 2330
  234. 2310     IF GD$<DT$(Q2) THEN 2340
  235. 2320     IF (GM%(1,Q2)=HOM%)OR(GM%(1,Q2)=VIS%)OR(GM%(2,Q2)=HOM%)OR(GM%(2,Q2)=VIS%) THEN 2490
  236. 2330  NEXT Q2
  237. 2340  HMS%=-1:VSS%=-1
  238. 2350  FAV%=0
  239. 2360    D$=GD$:GOSUB 2020:LOCATE 23,1:PRINT LEFT$(BLNK$,39);:LOCATE 23,1:PRINT FD$;" ";RIGHT$(TEAM$(HOM%),20);"     ";
  240. 2370    IF FAV%>0 THEN PRINT USING "+##.#";(FAV%/10);
  241. 2380    LOCATE 24,1:PRINT LEFT$(BLNK$,39);:LOCATE 24,1:PRINT "         ";RIGHT$(TEAM$(VIS%),20);"     ";
  242. 2390    IF FAV%<0 THEN PRINT USING "+##.#";ABS(FAV%/10);
  243. 2400  LOCATE 25,1:PRINT LEFT$(BLNK$,39);:LOCATE 25,1:PRINT"Hit Y to accept, N to reject";
  244. 2410  GOSUB 820:IF  C$="N" THEN 2480:ELSE IF C$<>"Y" THEN 2410
  245. 2420  IF Q2>NG THEN 2460
  246. 2430  FOR Z=NG TO Q2 STEP -1
  247. 2440  DT$(Z+1)=DT$(Z):GM%(1,Z+1)=GM%(1,Z):GM%(2,Z+1)=GM%(2,Z):GM%(3,Z+1)=GM%(3,Z):GM%(4,Z+1)=GM%(4,Z):GM%(5,Z+1)=GM%(5,Z)
  248. 2450  NEXT Z
  249. 2460  NG=NG+1:DT$(Q2)=GD$:GM%(1,Q2)=HOM%:GM%(2,Q2)=VIS%:GM%(3,Q2)=HMS%:GM%(4,Q2)=VSS%:GM%(5,Q2)=FAV%:GOTO 2470
  250. 2470  MSG$="Addition complete.":CHNG=1:GOLDTOP=-1:RETURN
  251. 2480  MSG$="Addition cancelled.":RETURN
  252. 2490  MSG$="Team playing on date.":GOLDTOP=-1:GTOP=Q2:RETURN
  253. 2500  LOCATE 22,15:PRINT "Team Selection Home/Visitor";
  254. 2510  LOCATE 25,1:PRINT LEFT$(BLNK$,39);:LOCATE 25,1:PRINT "Home:";:IF HOM%>0 THEN PRINT RIGHT$(TEAM$(HOM%),20);
  255. 2520  LOCATE 24,1:PRINT LEFT$(BLNK$,39);:LOCATE 24,1:PRINT"Enter team # (1 -";NT;") above.";
  256. 2530  LOCATE 23,1:PRINT LEFT$(BLNK$,39);:LOCATE 23,1:INPUT A$
  257. 2540  IF LEN(A$)=0 THEN 2550:ELSE A%=VAL(A$):IF (A%<1)OR(A%>NT) THEN 2530:ELSE IF LEFT$(TEAM$(A%),1)="Z" THEN 2530:ELSE HOM%=A%
  258. 2550  LOCATE 25,1:PRINT LEFT$(BLNK$,39);:LOCATE 25,1:PRINT "Visitor:";:IF VIS%>0 THEN PRINT RIGHT$(TEAM$(VIS%),20);
  259. 2560  LOCATE 24,1:PRINT LEFT$(BLNK$,39);:LOCATE 24,1:PRINT"Enter team # (1 -";NT;") above.";
  260. 2570  LOCATE 23,1:PRINT LEFT$(BLNK$,39);:LOCATE 23,1:INPUT A$
  261. 2580  IF LEN(A$)=0 THEN 2600:ELSE A%=VAL(A$):IF (A%<1)OR(A%>NT) THEN 2530:ELSE IF LEFT$(TEAM$(A%),1)="Z" THEN 2570:ELSE VIS%=A%
  262. 2590  IF HOM%=VIS% THEN MSG$="Warning: Same team selected.":RETURN
  263. 2600  MSG$="Team selection complete.":RETURN
  264. 2610  LOCATE 22,15:PRINT "Update a game.";:REM change score, line values
  265. 2620  LOCATE 25,1:PRINT LEFT$(BLNK$,39);:LOCATE 25,1:PRINT"(Just ENTER to cancel).";
  266. 2630  LOCATE 24,1:PRINT LEFT$(BLNK$,39);:LOCATE 24,1:PRINT"Enter game# above. (1 -";NG;") ";
  267. 2640  LOCATE 23,1:PRINT LEFT$(BLNK$,39);:LOCATE 23,1:INPUT S$:IF LEN(S$)=0 THEN 2890:ELSE GD%=VAL(S$):IF (GD%<1)OR(GD%>NG) THEN 2640
  268. 2650  GDT$=DT$(GD%):HT$=RIGHT$(TEAM$(GM%(1,GD%)),20):VS$=RIGHT$(TEAM$(GM%(2,GD%)),20):HSS%=GM%(3,GD%):VSS%=GM%(4,GD%):LPTS=GM%(5,GD%)/10
  269. 2660    D$=GDT$:GOSUB 2020:LOCATE 24,1:PRINT LEFT$(BLNK$,39);:LOCATE 24,1:PRINT FD$;" ";HT$;
  270. 2670    IF HSS%=-1 THEN PRINT "     ";:ELSE PRINT USING " ### ";HSS%;
  271. 2680    IF LPTS>0 THEN PRINT USING "+##.#";LPTS;
  272. 2690    LOCATE 25,1:PRINT LEFT$(BLNK$,39);:LOCATE 25,1:PRINT USING "####";GD%;:PRINT ".    ";VS$;
  273. 2700    IF VSS%=-1 THEN PRINT "     ";:ELSE PRINT USING " ### ";VSS%;
  274. 2710    IF LPTS<0 THEN PRINT USING "+##.#";-LPTS;
  275. 2720  LOCATE 23,1:PRINT LEFT$(BLNK$,39);:LOCATE 23,1:INPUT"Enter home score (or nothing)";S$:IF LEN(S$)=0 THEN 2730:ELSE HSS%=VAL(S$):IF HSS%<-1 THEN 2720
  276. 2730  LOCATE 23,1:PRINT LEFT$(BLNK$,39);:LOCATE 23,1:INPUT"Enter visitor score (or nothing)";S$:IF LEN(S$)=0 THEN 2740:ELSE VSS%=VAL(S$):IF VSS%<-1 THEN 2730
  277. 2740  LOCATE 23,1:PRINT LEFT$(BLNK$,39);:LOCATE 23,1:PRINT"Line: Hit 'H', 'V', or 'N' for nothing";:GOSUB 820:IF C$="N" THEN 2770:ELSE IF (C$<>"H")AND(C$<>"V") THEN 2740
  278. 2750  LOCATE 23,1:PRINT LEFT$(BLNK$,39);:LOCATE 23,1:INPUT"By how many? (or nothing)";S$:IF LEN(S$)=0 THEN 2770:ELSE LPTS=VAL(S$):IF LPTS<0 THEN 2750:ELSE IF C$="H" THEN LPTS=-LPTS
  279. 2760  LPTS%=LPTS*10
  280. 2770  REM print for verification
  281. 2780  IF (HSS%=GM%(3,GD%))AND(VSS%=GM%(4,GD%))AND(LPTS%=GM%(5,GD%)) THEN 2900
  282. 2790    LOCATE 23,1:PRINT LEFT$(BLNK$,39);:LOCATE 23,1:PRINT FD$;" ";HT$;
  283. 2800    IF HSS%=-1 THEN PRINT "     ";:ELSE PRINT USING " ### ";HSS%;
  284. 2810    IF LPTS>0 THEN PRINT USING "+##.#";LPTS;
  285. 2820    LOCATE 24,1:PRINT LEFT$(BLNK$,39);:LOCATE 24,1:PRINT USING "####";GD%;:PRINT ".    ";VS$;
  286. 2830    IF VSS%=-1 THEN PRINT "     ";:ELSE PRINT USING " ### ";VSS%;
  287. 2840    IF LPTS<0 THEN PRINT USING "+##.#";-LPTS;
  288. 2850  LOCATE 25,1:PRINT LEFT$(BLNK$,39);:LOCATE 25,1:PRINT"Hit Y to accept, N to reject";
  289. 2860  GOSUB 820:IF  C$="N" THEN 2890:ELSE IF C$<>"Y" THEN 2860
  290. 2870  GM%(3,GD%)=HSS%:GM%(4,GD%)=VSS%:GM%(5,GD%)=LPTS%:CHNG=1
  291. 2880  MSG$="Update complete.":GOLDTOP=-1:RETURN
  292. 2890  MSG$="Update cancelled.":RETURN
  293. 2900  MSG$="Nothing updated.":RETURN
  294. 2910  LOCATE 22,15:PRINT "Delete a game.";
  295. 2920  LOCATE 25,1:PRINT LEFT$(BLNK$,39);:LOCATE 25,1:PRINT"(or press ENTER to cancel).";
  296. 2930  LOCATE 24,1:PRINT LEFT$(BLNK$,39);:LOCATE 24,1:PRINT"Enter game# above. (1 -";NG;") ";
  297. 2940  LOCATE 23,1:PRINT LEFT$(BLNK$,39);:LOCATE 23,1:INPUT S$:IF LEN(S$)=0 THEN 3090:ELSE GD%=VAL(S$):IF (GD%<1)OR(GD%>NG) THEN 2940
  298. 2950  GDT$=DT$(GD%):HT$=RIGHT$(TEAM$(GM%(1,GD%)),20):VS$=RIGHT$(TEAM$(GM%(2,GD%)),20):HSS%=GM%(3,GD%):VSS%=GM%(4,GD%):LPTS=GM%(5,GD%)/10
  299. 2960    D$=GDT$:GOSUB 2020:LOCATE 24,1:PRINT LEFT$(BLNK$,39);:LOCATE 24,1:PRINT FD$;" ";HT$;
  300. 2970    IF HSS%=-1 THEN PRINT "     ";:ELSE PRINT USING " ### ";HSS%;
  301. 2980    IF LPTS>0 THEN PRINT USING "+##.#";LPTS;
  302. 2990    LOCATE 25,1:PRINT LEFT$(BLNK$,39);:LOCATE 25,1:PRINT USING "####";GD%;:PRINT ".    ";VS$;
  303. 3000    IF VSS%=-1 THEN PRINT "     ";:ELSE PRINT USING " ### ";VSS%;
  304. 3010    IF LPTS<0 THEN PRINT USING "+##.#";-LPTS;
  305. 3020  LOCATE 23,1:PRINT LEFT$(BLNK$,39);:LOCATE 23,1:PRINT"Hit Y to delete, N to cancel";
  306. 3030  GOSUB 820:IF  C$="N" THEN 3090:ELSE IF C$<>"Y" THEN 3030
  307. 3040  IF GD%=NG THEN 3080
  308. 3050  FOR Z=GD%+1 TO NG
  309. 3060  DT$(Z-1)=DT$(Z):GM%(1,Z-1)=GM%(1,Z):GM%(2,Z-1)=GM%(2,Z):GM%(3,Z-1)=GM%(3,Z):GM%(4,Z-1)=GM%(4,Z):GM%(5,Z-1)=GM%(5,Z)
  310. 3070  NEXT Z
  311. 3080  NG=NG-1:MSG$="Delete complete.":GOLDTOP=-1:CHNG=1:RETURN
  312. 3090  MSG$="Delete cancelled.":RETURN
  313. 3100  CLS:PRINT"     Help for Game/Team Maintenance":PRINT
  314. 3110  PRINT"This menu has options for team and game"
  315. 3120  PRINT"file maintenance. The team file is used"
  316. 3130  PRINT"to maintain the names and types of the"
  317. 3140  PRINT"teams included in the game schedule.":PRINT"The game file is a master schedule of":PRINT"all pro and highlighted college games."
  318. 3150  PRINT"You may opt to leave the schedule as is":PRINT"or to tailor it using the maintenance":PRINT"options."
  319. 3160   PRINT:PRINT"There are 3 types of teams: Pro, ":PRINT"College, and Other. They are designated"
  320. 3170  PRINT"as such by the first letter of the type":PRINT"(P,C,O). You may add teams, change the"
  321. 3180  PRINT"spellings of team names, or delete the"
  322. 3190  PRINT"teams that you want to remove from the"
  323. 3200  PRINT"master schedule. You must first delete":PRINT"all games for a team you want to remove."
  324. 3210  GOSUB 3570:PRINT"Games are stored in order by date. Game":PRINT"information includes the home & visitor":PRINT"teams and scores, as well as the line"
  325. 3220  PRINT"for the game. You may delete games from":PRINT"the file, update the scores or lines,":PRINT"and add new games.":PRINT
  326. 3230  PRINT"Due to memory constraints, the number":PRINT"of different teams will be restricted":PRINT"to 90, and the master game schedule"
  327. 3240  PRINT"may contain up to 800 games."
  328. 3250  PRINT"When you leave this menu, if you have":PRINT"changed the team or game file, you will":PRINT"have to verify that you want to save":PRINT"the changes."
  329. 3260  PRINT:PRINT"More detailed information on team/game":PRINT"file maintenance can be found in the":PRINT"help screens available as options on":PRINT"their menus."
  330. 3270  GOSUB 3570:RETURN
  331. 3280  CLS:PRINT"Help Information for Team Maintenance":PRINT:PRINT"You may select options by hitting the":PRINT"first character or the Fn keys.":PRINT
  332. 3290  PRINT"Options available:":PRINT
  333. 3300  PRINT"Quit(F1)- This will take you from team":PRINT"   maintenance to where you came from,":PRINT"   either the game or main menu.":PRINT
  334. 3310  PRINT"Delete(F3)- This will allow you to":PRINT"   remove a team name and make room for":PRINT"   another if necessary. All games for":PRINT"   the team must be deleted first.":PRINT
  335. 3320  PRINT"Add(F5)- This will allow you to add a":PRINT"   team to the list if there is room.":PRINT"   You will be prompted for the name":PRINT"   and then to verify it. The name will":PRINT"   be inserted into the first open spot":PRINT"   in the list.
  336. 3330  GOSUB 3570
  337. 3340  PRINT"Update(F7)- This will let you alter the":PRINT"   spelling of a team name. You must ":PRINT"   enter the new name and verification":PRINT"   that you want it changed.":PRINT
  338. 3350  PRINT"Help (F8)- This will re-display these ":PRINT"   help screens.":PRINT
  339. 3360  PRINT"Back(F9)- This will scroll teams":PRINT"   back a screen so you can see all":PRINT"   team names.":PRINT
  340. 3370  PRINT"Forward(F10)- This will scroll teams":PRINT"   forward a screen.":PRINT
  341. 3380  IF MODE=2 THEN 3400
  342. 3390  PRINT"Game(F6)- This will take you to a game":PRINT"   file maintenance screen, in which  ":PRINT"   you may do all functions except add.":PRINT:GOTO 3410
  343. 3400  PRINT"Teams(F6)- This will allow you to pick":PRINT"   a home and visitor team so you can":PRINT"   add game entries for them. If you do":PRINT"   not enter team #s, the teams will":PRINT"   stay the same."
  344. 3410  GOSUB 3570:C$="0":OLDTOP=-1:RETURN
  345. 3420  CLS:PRINT"Help Information for Game Maintenance":PRINT:PRINT"You may select options by hitting the ":PRINT"first character or the Fn keys.":PRINT
  346. 3430  PRINT"Options available:":PRINT
  347. 3440  PRINT"Quit(F1)- This will take you from game":PRINT"   maintenance to where you came from,":PRINT"   either the team or main menu.":PRINT
  348. 3450  PRINT"Select(F2)- This will let you display":PRINT"   games for a selected date range ":PRINT"   (start-end date) or ALL to get all.":PRINT
  349. 3460  PRINT"Delete(F3)- This will allow you to":PRINT"   remove a game. You must enter the":PRINT"   game number and verification that":PRINT"   you truly want to delete the game.":PRINT
  350. 3470  GOSUB 3570:IF MODE=1 THEN 3510
  351. 3480  PRINT"Add(F5)- This will allow you to add a":PRINT"   game to the master list if there is":PRINT"   room. You must first select teams":PRINT "   by going into the teams list. Then":PRINT"   you must verify that they are the"
  352. 3490  PRINT"   ones you want. You may enter a line":PRINT"   if you know it. Then you must verify":PRINT"   that you want to add the record. It":PRINT"   will be inserted in date sequence.":PRINT
  353. 3500  PRINT"Team(F6)- Allows you to switch to the":PRINT"   team list screen to select teams.":PRINT
  354. 3510  PRINT"Update(F7)- This will allow you to":PRINT"   enter the score and line for a game.":PRINT"   After making the changes, you must":PRINT"   verify the changes are valid.":PRINT
  355. 3520  PRINT"Help(F8)- This will re-display these":PRINT"   help screens.":PRINT
  356. 3530  IF MODE=2 THEN GOSUB 3570
  357. 3540  PRINT"Back(F9)- This will scroll games":PRINT"   back a screen so you can see all":PRINT"   games.":PRINT
  358. 3550  PRINT"Forward(F10)- This will scroll games":PRINT"   forward a screen.":PRINT
  359. 3560  GOSUB 3570:C$="0":GOLDTOP=-1:RETURN
  360. 3570  LOCATE 25,1:PRINT"Hit any key to continue";:GOSUB 820:CLS:RETURN
  361. 3580  REM error handling routines
  362. 3590  PRINT:IF ERL=90 AND ERR=53 THEN PRINT"TEAMS data not found on logged drive.":NT=0:GOSUB 3750:RESUME 140
  363. 3600  IF ERL=170 AND ERR=53 THEN PRINT"GAMES data not found on logged drive.":NG=0:GOSUB 3750:RESUME 240
  364. 3610  IF (ERL=90 OR ERL=110) AND (ERR=24 OR ERR=25 OR ERR=62 OR ERR=71 OR ERR=72) THEN PRINT"Error reading TEAMS on logged drive.":ELSE GOTO 3630
  365. 3620  GOSUB 3730:CLOSE#1:IF C$="R" THEN RESUME 90:ELSE RESUME 500
  366. 3630  IF (ERL=170 OR ERL=190) AND (ERR=24 OR ERR=25 OR ERR=62 OR ERR=71 OR ERR=72) THEN PRINT"Error reading GAMES on logged drive.":ELSE GOTO 3650
  367. 3640  GOSUB 3730:CLOSE#2:IF C$="R" THEN RESUME 170:ELSE RESUME 500
  368. 3650  IF ERR=100 THEN PRINT"Invalid team referenced by GAMES data.":PRINT"Please restore or delete GAMES file.":RESUME 500
  369. 3651  IF ERR=101 THEN CLS:PRINT"This program must be accessed through":PRINT"the POOLER program only.":GOSUB 3750:SYSTEM
  370. 3652  IF ERR=151 THEN CLS:PRINT"Invalid number of teams in TEAMS.DAT":PRINT"file. Restore old file and re-try.":GOSUB 3750:SYSTEM
  371. 3653  IF ERR=152 THEN CLS:PRINT"Invalid number of games in GAMES.DAT":PRINT"file. Restore old file and re-try.":GOSUB 3750:SYSTEM
  372. 3660  IF (ERL=380 OR ERL=390 OR ERL=410) AND (ERR=24 OR ERR=25 OR ERR=53 OR ERR=61 OR ERR=70 OR ERR=71 OR ERR=72) THEN 3670:ELSE 3680
  373. 3670  PRINT"Error writing TEAMS on logged drive.":GOSUB 3730:IF C$="R" THEN RESUME 380:ELSE RESUME 500
  374. 3680  IF (ERL=380 OR ERL=390 OR ERL=410) AND (ERR=24 OR ERR=25 OR ERR=53 OR ERR=61 OR ERR=70 OR ERR=71 OR ERR=72) THEN 3690:ELSE 3700
  375. 3690  PRINT"Error writing GAMES on logged drive.":GOSUB 3730:IF C$="R" THEN RESUME 440:ELSE RESUME 500
  376. 3700  IF ERL=500 AND (ERR=53 OR ERR=71 OR ERR=72) THEN 3710:ELSE 3720
  377. 3710  PRINT"Please put disk with POOLER.BAS":PRINT"in the logged drive.":GOSUB 3730:IF C$="R" THEN RESUME 500:ELSE SYSTEM
  378. 3720  PRINT"Irrecoverable error#";ERR:ON ERROR GOTO 0
  379. 3730  PRINT"Press R to re-try or Q to quit."
  380. 3740  GOSUB 820:IF C$="R" OR C$="Q" THEN RETURN:ELSE GOTO 3730
  381. 3750  FOR I=1 TO 400:J7=I*2:NEXT I:RETURN:REM delay for messages
  382.